/**
 * Copyright (c) 2024 Archermind Technology (Nanjing) Co. Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef WEBRTC_CONFIGURATION_H
#define WEBRTC_CONFIGURATION_H

#include "napi.h"

#include "api/peer_connection_interface.h"

namespace webrtc {

// class NapiConfiguration : Napi::ObjectWrap<NapiConfiguration> {
// public:
//     static void Init(Napi::Env env, Napi::Object exports);
//
//     static Napi::Object NewInstance(Napi::Env env, const PeerConnectionInterface::RTCConfiguration& configuration);
//
//     NapiConfiguration(const Napi::CallbackInfo& info);
//
//     PeerConnectionInterface::RTCConfiguration Get() const;
//
// protected:
//
// private:
//     static Napi::FunctionReference constructor_;
//
//     PeerConnectionInterface::RTCConfiguration configuration_;
// };

// class NapiConfiguration {
// public:
//     static bool ToNative(const Napi::Object& jsConfiguration, PeerConnectionInterface::RTCConfiguration&
//     configuration); static bool ToJs(
//         const PeerConnectionInterface::RTCConfiguration& configuration, Napi::Object& jsConfiguration);
// };

bool JsToNativeConfiguration(
    const Napi::Object& jsConfiguration, PeerConnectionInterface::RTCConfiguration& configuration);

bool NativeToJsConfiguration(
    const PeerConnectionInterface::RTCConfiguration& configuration, Napi::Object& jsConfiguration);

} // namespace webrtc

#endif // WEBRTC_CONFIGURATION_H
